package com.spring.demo.controller;

import com.spring.demo.service.UserService;
import org.springframework.stereotype.Controller;

import javax.annotation.Resource;

@Controller
public class UserController {

    // 1.属性注入
//    @Autowired //自动注入  注意在 main方法中，不能使用Autowired注解来简单的获取到bean对象
//    // 注意 属性注入没法实现 final 修饰的变量注入
//    public UserService userService;  // 在这里就获取到了UserService对象，并且进行了实例化
//    public UserService userService2;  // 在这里就获取到了UserService对象，并且进行了实例化


    // 2.setter注入,注入的对象可能会被修改，因为就是一个普通的set方法
//    private UserService userService;
//
//    @Autowired  // 不加注入注解的话，上一句代码就是一个声明
//    public void setUserService(UserService userService) {
//        this.userService = userService;
//    }

    // 3.构造方法注入
//    private UserService userService;
//    public UserController(UserService userService) {
//        this.userService = userService;
//    }

    // Resource 注入 JDK提供的
    @Resource
    private UserService userService;

    public void sayHi() {
        System.out.println("hi UserController");

        // 疑问：为什么不能在括号外?
        userService.sayHi();
    }
}
